...

Automate Multi-Step File Processing Into a Single API Call

Serious file operations are multi-step and conditional. Filestack runs that file automation as a declared file processing workflow that fires on upload.

Results delivered by webhook, on every upload.

Trusted by teams at
SendGrid logo with stylized gray text and overlapping square shapes on the left.
LinkedIn logo followed by the word SlideShare in gray text on a light background.
The word teachable is written in all lowercase, sans-serif letters with a colon between teach and able, in a light purple color on a light background.
A gray Airtable logo featuring a geometric cube design to the left of the word Airtable in bold, modern font.

One workflow, as a diagram and as JSON

Detect faces on upload, blur them only when one is found, compress, then store. Create a workflow →

One definition, two representationsugc-face-privacy-pipeline
{
   "name": "ugc-face-privacy-pipeline",
   "next": [{
      "name": "detect_faces",
      "task": { "params": { "export": true } },
      "next": [{
         "name": "blur_faces",
         "requirements": [{ "type": "and",
            "conditions": [{
               "task": "detect_faces",
               "path": ["faces", "length"],
               "condition": "gt",
               "value": 0
            }] }],
         "next": [{ "name": "compress",
            "next": [{ "name": "store" }] }]
      }]
   }]
}

The visual builder and API tree describe the same four-task workflow.

Conditional routing at every step

Each task reads the result of the one before it and decides whether to run.

Condition editorfaces.length > 0
The condition editor set to run Blur faces when faces.length is greater than zero.
Blurring runs only when the previous task found a face.
Plain-English routeDetect faces, then blur conditionally
The builder translating the workflow into a sentence: detect faces, then if faces.length is greater than zero, blur faces.
The route can be reviewed as a sentence before it runs.

Trigger on upload, run async, notify on completion

A workflow attaches to the upload policy, so it fires the moment a file arrives. Heavy jobs (transcodes, video moderation) run asynchronously. When the run resolves, the fs.workflow webhook closes the loop with per-task results. The queue and the poller are ours.

01
Attach
To upload policy
02
Run async
Heavy jobs off-thread
03
Notify
fs.workflow webhook
Attach on uploadPicker configuration
The Picker configuration showing storeTo.workflows set to the workflow ID before the picker opens.

One key in storeTo connects the upload to the workflow.

The tasks you can chain

Group them by category and route between them conditionally. One declaration covers an image processing pipeline, a document processing workflow, or a media processing pipeline, and only the task list changes.

Security

Virus scanning

Scan any file type before it is trusted.

Virus detection →

Intelligence

SFW, tags, OCR

Moderate, label, and extract text.

Moderation · OCR

Transforms

Convert, smart crop

Reshape and convert.

Smart image processing →

Media

Transcoding

Transcode audio and video to delivery formats, which is the step a video processing pipeline is usually built around.

Audio & video →

Select taskTransform, 46
The Transform tab of the task picker with resize, crop, watermark, rotate, blur, sharpen, pixelate, store, and other transformation tasks.
Search spans the catalogue; Recent keeps the last few tasks within reach.
Select taskIntelligence, 14
The Intelligence tab listing tags, sentiment, moderation, caption, phishing detection, OCR, virus detection, image insights, and speech to text tasks.
A padlock marks a task available on another plan.
Final taskStore options
The Store task options with Filename, Location, Path, Container, Region, and Access fields.

The destination is a set of parameters, not another pipeline.

The last step decides where the file lands

A pipeline ends with store, and that task takes its destination as parameters. Point it at S3, Azure, Google Cloud Storage, Dropbox, Rackspace, or Cloudinary, pick one of 23 AWS regions, then set container, path, and public or private access.

Leave it empty and the output stays in Filestack storage. Moving a pipeline between backends changes those parameters and nothing else.

Use cases with real pipelines

Each is a task chain you can declare once and run on every upload.

Image processing pipeline

Scan, moderate, transform, publish

scan → sfw → smart_crop → publish
# fail any gate → quarantine
Image processing pipeline

Detect, OCR, convert, notify

doc_detection → ocr → convert(pdf)
webhook to CRM
Video processing pipeline

Transcode, thumbnail, notify

upload → transcode(formats)
→ thumbnail → notify
Print service

Validate DPI, convert to print-ready

imagesize → upscale → output=pdf
# reject the file that would fail at the press

Build vs buy the pipeline

A DIY pipeline requires a queue, worker pool, retry logic, state tracking, monitoring, and on-call ownership. A Filestack Workflow replaces much of that infrastructure with a declaration you attach to uploads.

Build
  • Queue + workers
  • Retries + state
  • Monitoring + on-call
Buy
  • Declare the workflow
  • Attach to upload
  • Read the webhook

Frequently Asked Questions

What is a Filestack Workflow?

A Filestack Workflow is a declared pipeline of processing tasks (virus scanning, content moderation, transformation, transcoding, OCR) that runs automatically on upload and reports its results through webhooks. It is a workflow automation API for files, declared once rather than wired together per job.

Can workflows run conditionally?

Yes. Workflows support conditional routing, so a file can take different paths based on the result of an earlier task: for example, only continuing to publish if a virus scan is clean and a moderation check is safe.

How do I get workflow results?

When a workflow run resolves, Filestack sends an fs.workflow webhook to your endpoint containing the per-task results, so your backend is notified without polling.

Do workflows work with any storage backend?

Workflows operate on files in the Filestack pipeline and can deliver results to your configured storage, including S3, Azure, Google Cloud Storage, and Rackspace.

Declare your file pipeline once

Build a conditional workflow in the dev portal and attach it to your uploads. Start free.